package com.one.group.service;

import com.mybatisflex.core.service.IService;
import com.one.group.model.dto.MaintenancePlanAddDto;
import com.one.group.model.dto.MaintenancePlanExecuteDto;
import com.one.group.model.dto.MaintenancePlanQueryDto;
import com.one.group.model.dto.MaintenancePlanUpdateDto;
import com.one.group.model.entity.MaintenancePlan;
import com.one.group.model.vo.MaintenancePlanVo;

import java.util.List;

/**
 * {@code @Create:}  2025-09-28  14 : 33
 * {@code @Author:} Cherry
 * {@code @ToUser:} 凡是发生,皆有利于我。
 * ------------------------------------
 * {@code @note:}
 */

@SuppressWarnings({"all"})
public interface MaintenancePlanService extends IService<MaintenancePlan> {
    /**
     * 新增保养计划
     *
     * @param addDto 新增请求DTO
     * @return 保养计划ID
     */
    void addSpMaintenancePlan(MaintenancePlanAddDto addDto);

    /**
     * 分页查询保养计划列表
     *
     * @param queryDto 查询请求DTO
     * @return 分页结果
     */
    List<MaintenancePlanVo> listSpMaintenancePlans(MaintenancePlanQueryDto queryDto);

    /**
     * 更新保养计划
     *
     * @param updateDto 更新请求DTO
     */
    void updateSpMaintenancePlan(MaintenancePlanUpdateDto updateDto);

    /**
     * 批量删除保养计划
     *
     * @param batchDeleteDto 批量删除请求DTO
     */
    void batchDeleteSpMaintenancePlans(List<Long> ids);

    void deleteById(Long id);

    /**
     * 执行保养计划（记录执行日志）
     *
     * @param id         保养计划ID
     * @param executeDto 执行请求DTO
     * @return 执行记录ID
     */
    void executeSpMaintenancePlan(MaintenancePlanExecuteDto executeDto);

    ;
}
